package main.链表;

import common.ListNode;


/**
 * @author tmh
 * @date 2024/7/18 21:16
 * @description
 */
public class T160相交链表 {
    /**
     * 一个很牛逼的思路，同时遍历两个链表，当两个节点相等的时候，如果这个节点不为空，说明这个节点就是相交的节点
     * 如果为空，说明这两个链表不相交，不论哪种情况，都直接返回pA就行了
     * @param headA
     * @param headB
     * @return
     */
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if (headB == null || headA == null) {
            return null;
        }
        ListNode pA = headA, pB = headB;
        while (pA != pB) {
            pA = pA == null ? headB : pA.next;
            pB = pB == null ? headA : pB.next;
        }
        return pA;
    }
}
